home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Requester
/
QUIZ.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
8KB
|
296 lines
@strings
@quiz
PROCEDURE quiz
REPEAT
CLS
IF alt
menge=RAND(PRED(g_menge&))+1
frage$="Welche Städte liegen in "+menge$(menge)
@auswahl_box(200,50,g_menge&*t_menge&,frage$,teil$())
@werte_aus
ELSE
teil=RAND(g_menge&*t_menge&)+1
frage$="In welchem Bundesland liegt "+teil$(teil)
@auswahl_box(200,50,g_menge&,frage$,menge$())
@werte_aus
ENDIF
DO
w$=INKEY$
EXIT IF NOT w$="" AND MOUSEK=0
LOOP
UNTIL ASC(w$)=27
RETURN
PROCEDURE strings
g_menge&=7 !7 Bundesländer
t_menge&=10 !mit je 10 Städten
DIM menge$(g_menge&),teil$(g_menge&*t_menge&),t_rang%(g_menge&*t_menge&),m_rang%(g_menge&)
FOR j=1 TO g_menge&
m_rang%(j)=j
READ menge$(j)
FOR k=1 TO t_menge&
INC zÄhler
t_rang%(zÄhler)=zÄhler
READ teil$(zÄhler)
NEXT k
NEXT j
SSORT teil$(+),g_menge&*t_menge&,t_rang%()
SSORT menge$(+),g_menge&,m_rang%()
'
DATA Nordrhein-Westfalen
DATA Aachen,Recklinghausen,Düsseldorf,Essen,Bielefeld
DATA Köln,Bonn,Leverkusen,Gelsenkirchen,Herne
'
DATA Bayern
DATA Augsburg,Fürth,München,Nürnberg,Regensburg
DATA Würzburg,Füssen,Rießersee,Landshut,Rosenheim
'
DATA Baden-Württemberg
DATA Baden-Baden,Freiburg,Heidelberg,Heilbronn,Karlsruhe
DATA Mannheim,Pforzheim,Stuttgart,Ulm,Herzogenaurach
'
DATA Hessen
DATA Darmstadt,Frankfurt,Kassel,Offenbach,Wiesbaden
DATA Bensheim,Fulda,Gießen,Hanau,Rodgau
'
DATA Schleswig-Holstein
DATA Flensburg,Kiel,Lübeck,Elmshofen,Itzehoe
DATA Neumünster,Norderstedt,Pinneberg,Rendsburg,Wedel
'
DATA Niedersachsen
DATA Braunschweig,Hannover,Oldenburg,Osnabrück,Salzgitter
DATA Wihelmshaven,Wolfsburg,Wolfenbüttel,Hameln,Peine
'
DATA Rheinland-Pfalz
DATA Kaiserslautern,Koblenz,Ludwigshafen,Mainz,Trier
DATA Bad Kreuznach,Pirmasens,Zweibrücken,Worms,Landau
RETURN
PROCEDURE werte_aus
IF alt
alt=0
FOR i=1 TO g_menge&*t_menge&
IF NOT a!(i)
IF t_rang%(i)>PRED(m_rang%(menge))*t_menge& AND t_rang%(i)<=PRED(m_rang%(menge))*t_menge&+t_menge&
INC punkte|
ENDIF
ENDIF
NEXT i
CLS
SELECT punkte|
CASE 0
antwort$="Sie haben keine Stadt richtig zugeordnet!"
CASE 1
antwort$="Sie haben eine Stadt richtig zugeordnet!"
CASE 2 TO 10
antwort$="Sie haben "+STR$(punkte|)+" Städte richtig zugeordnet!"
ENDSELECT
zentr|=40-LEN(antwort$)/2
PRINT AT(zentr|,5);antwort$
punkte|=0
ELSE
alt=1
CLS
test=1
WHILE a!(test) AND test<g_menge&
INC test
WEND
IF m_rang%(test)<>SUCC(INT(PRED(t_rang%(teil))/t_menge&))
test=1
WHILE m_rang%(test)<>SUCC(INT(PRED(t_rang%(teil))/t_menge&))
INC test
WEND
antwort$="Falsch, "+teil$(teil)+" liegt in "+menge$(test)
zentr|=40-LEN(antwort$)/2
PRINT AT(zentr|,5);antwort$
ELSE
zentr|=40-LEN("Richtig!")/2
PRINT AT(zentr|,5);"Richtig!"
ENDIF
ENDIF
ERASE a!()
RETURN
'
PROCEDURE auswahl_box(x&,y|,n|,u$,VAR wahl$())
LOCAL hintergrund$,teil$,taste$,ok!,revers!,markiert!,ende!,m$
LOCAL b&,p&,l&,re&,taste&,ma|,i|,l|,erster|,l1|,l2|
LOCAL l3|,l4|,eintrag|,nummer|,revers|,richtung|
'
DIM a!(n|)
ARRAYFILL a!(),TRUE
ok!=FALSE
revers!=FALSE
markiert!=TRUE
DEFFILL 1
'
ma|=LEN(u$)
FOR i|=1 TO n|
ma|=MAX(ma|,LEN(wahl$(i|)))
NEXT i|
'
IF n|>10
l|=120
ELSE
l|=(n|*12)
ENDIF
'
b&=SUCC(INT(MAX((ma|*8)+30,156)/10))*10
GET x&,y|,x&+b&+1,y|+l|+37,hintergrund$
COLOR 0
PBOX x&,y|,x&+b&,y|+l|+36
COLOR 1
INC x&
INC y|
BOX x&,y|,x&+b&,y|+12
mittig|=LEN(u$)*4
TEXT x&+b&/2-mittig|,y|+9,u$
BOX x&,y|+12,x&+b&,y|+23
'
BOX x&,y|+23,x&+b&,y|+23+l|
BOX x&,y|+23+l|,x&+b&,y|+34+l|
IF n|>10
i|=y|+l|+28
LINE x&+2,i|,x&+6,i|+4
LINE x&+6,i|+4,x&+10,i|
LINE x&+3,i|-4,x&+3,i|
LINE x&+3,i|-4,x&+9,i|-4
LINE x&+9,i|-4,x&+9,i|
'
LINE x&+2,y|+18,x&+6,y|+14
LINE x&+6,y|+14,x&+10,y|+18
LINE x&+3,y|+17,x&+3,y|+21
LINE x&+3,y|+21,x&+9,y|+21
LINE x&+9,y|+21,x&+9,y|+17
GET x&+2,y|+14,x&+10,i|+4,m$
FOR p&=x&+11 TO x&+b& STEP 10
PUT SUCC(p&),ADD(y|,14),m$
NEXT p&
ELSE
DEFFILL ,3
FILL x&+3,y|+15
FILL x&+3,y|+25+l|
ENDIF
'
LINE x&+15,y|+23,x&+15,y|+23+l|
FOR i|=0 TO MIN(PRED(n|),9)
TEXT x&+3,y|+31+i|*12,i|
NEXT i|
'
DEC x&
DEC y|
BOX x&,y|,x&+b&,y|+l|+36
'
FOR l&=y|+23 TO y|+23+l| STEP 12
LINE x&,l&,x&+b&,l&
NEXT l&
FOR i|=1 TO MIN(n|,10)
TEXT x&+b&/2-(LEN(wahl$(i|))*8)/2,y|+20+i|*12,wahl$(i|)
NEXT i|
'
erster|=1
re&=x&+b&
l1|=y|+12
l2|=l1|+11
l3|=l2|+l|
l4|=l3|+11
REPEAT
taste$=INKEY$
IF taste$<>""
IF LEN(taste$)=1
taste&=ASC(taste$)
ELSE
taste&=ASC(RIGHT$(taste$))
ENDIF
SELECT taste&
CASE 65
IF erster|<n|-9
@a_revers(10)
@a_scroll(1)
ENDIF
CASE 66
IF erster|>1
@a_revers(10)
@a_scroll(0)
ENDIF
CASE 48 TO 57
SUB taste&,48
IF taste&<n|
IF a!(erster|+taste&)=TRUE
a!(erster|+taste&)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ELSE
a!(erster|+taste&)=TRUE
COLOR 0
LINE x&+b&-10,y|+30+taste&*12,x&+b&-7,y|+33+taste&*12
LINE x&+b&-7,y|+33+taste&*12,x&+b&-3,y|+25+taste&*12
ENDIF
ENDIF
CASE 13
ende!=TRUE
ENDSELECT
taste$=""
ENDIF
'
IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l2| AND MOUSEY<l3| AND MOUSEK<>2
' Mauszeiger im Auswahlfeld
eintrag|=MAX(0,(MOUSEY-y|-24)/12)
@a_revers(eintrag|)
IF MOUSEK=1 AND ok!=FALSE
IF a!(erster|+eintrag|)=TRUE
a!(erster|+eintrag|)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ELSE
a!(erster|+eintrag|)=TRUE
COLOR 3
LINE x&+b&-10,y|+30+eintrag|*12,x&+b&-7,y|+33+eintrag|*12
LINE x&+b&-7,y|+33+eintrag|*12,x&+b&-3,y|+25+eintrag|*12
ENDIF
ENDIF
ok!=MOUSEK
ELSE
@a_revers(10)
ENDIF
'
IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l1| AND MOUSEY<l2| AND MOUSEK=1 AND erster|<n|-9
' Mauszeiger im oberen Scrollfeld
@a_scroll(1)
ELSE IF MOUSEX>x& AND MOUSEX<re& AND MOUSEY>l3| AND MOUSEY<l4| AND MOUSEK=1 AND erster|>1
' Mauszeiger im unteren Scrollfeld
@a_scroll(0)
ENDIF
UNTIL MOUSEK=2 OR ende!=TRUE
PUT x&,y|,hintergrund$
RETURN
PROCEDURE a_revers(nummer|)
IF revers!=TRUE AND revers|<>nummer| !Revers off
GET x&+19,y|+25+revers|*12,x&+b&-3,y|+33+revers|*12,revers$
PUT x&+19,y|+25+revers|*12,revers$,30
revers!=FALSE
ELSE IF revers!=FALSE AND nummer|<10 !Revers on
GET x&+19,y|+25+nummer|*12,x&+b&-3,y|+33+nummer|*12,revers$
PUT x&+19,y|+25+nummer|*12,revers$,30
revers!=TRUE
revers|=nummer|
ENDIF
RETURN
PROCEDURE a_scroll(richtung|)
IF richtung|
INC erster|
ELSE
DEC erster|
ENDIF
GET x&+17,y|+25+richtung|*12,x&+b&-1,y|+10+l|+richtung|*12,teil$
PUT x&+17,y|+37-richtung|*12,teil$
DEFFILL 0
PBOX x&+18,y|+25+richtung|*108,x&+b&-1,y|+34+richtung|*108
DEFFILL 1
TEXT x&+5+b&/2-(LEN(wahl$(erster|+richtung|*9))*8)/2,y|+32+richtung|*108,wahl$(erster|+richtung|*9)
IF a!(erster|+richtung|*9)=FALSE
COLOR 1
LINE x&+b&-10,y|+30+richtung|*108,x&+b&-7,y|+33+richtung|*108
LINE x&+b&-7,y|+33+richtung|*108,x&+b&-3,y|+25+richtung|*108
ENDIF
RETURN